1. Field of the Invention
The invention relates generally to driving heterogeneous devices from an output server. More particularly, the invention relates to a flexible mechanism which allows jobs containing formatted data, such as image data, to be submitted to arbitrary devices.
2. Description of the Related Art
Print servers, such as the IBM® InfoPrint® Manager, traditionally provide for central management of a printing environment. A simplified printing scenario in a local area network (LAN) environment will briefly be described with reference to FIG. 1. In this example, a personal computer workstation 100 is coupled to a print server 120 via a LAN 110. The print server 120 includes a spooler 130 for controlling the spooling of data files and presentation services 140 for generating appropriate commands to drive an attached printer. The print server 120 may also include other components that are not shown for performing basic tasks, such as monitoring and configuring attached printers, and providing print job management. At any rate, when the PC workstation 100 has data to print, it sends print data to the print server 120. Among the functions typically provided by a print server is the conversion of the data stream containing the print data to a data stream supported by the printer to which the print data is destined. In this example, the print server 120 is coupled to a first printer 150 and a second printer 160. The two printers 150 and 160 may each respond to different data streams. For instance, the first printer 150 may accept the Intelligent Printer Data Stream (IPDS) and the second printer 160 may accept PostScript. Therefore, the print server 120 must provide a means for converting between the various input data streams that may be received and the two data streams accepted by the printers 150 and 160. While in this simplified example only two types of printers have been shown, it should be appreciated that real world printing environments may include many different types of printers.
Increasingly, this is the case in professional printing environments, such as commercial and production printing environments which are becoming more and more diverse. While print servers typically support diverse printing environments, such support is costly in terms of the development effort required to modify the print server software in existing inflexible architectures. For example, in order to accommodate a new data stream, it is common to add a new complex printer driver to the print server. In existing print server architectures, these print drivers must typically be developed from scratch to incorporate the rich set of features that users have come to expect. This rewriting of code is required because typically the print server's capabilities and transforms are coded for a particular type of data stream and for a particular path through the print server. Also impacting the development efforts, is the inherent difficulty in manipulating the complex data streams that are received by print servers and transforming them into equally complex data streams required by printers. In view of the foregoing, it is desirable to provide a flexible and extensible architecture that allows support for new output devices to be added easily and inexpensively.
Another problem associated with existing print servers is the limited range of output devices supported. It is often desirable to present or deliver information in a form other than printer hard copy. Therefore, it would be advantageous to provide a mechanism to support output to destinations including fax and email, for example.
Prior art output servers also have other significant limitations which perplex end users. Fax servers report the fact that they have successfully transmitted a fax job. However, there is no indication of the success or failure of the job being received and/or handled at the destination. Often, unwary end users are surprised to discover that their “successful” job was not successful at the receiving end. Similar limitations exist in printer control protocols that only report the success or failure of a print job being converted to image. Therefore, it is desirable to provide a mechanism by which additional job and device status may be provided to the end user.